---
permalink: /activiti-in-action.html
title: "Activiti实战"
---

<style type="text/css">
.book-index li {
	display: inline;
	padding: 1em;
}
</style>

<table border="0">
	<tr>
		<td width="220"><a href="http://www.activiti.org" target="_blank"><img src="/images/activiti_logo.png" alt="Activiti" /></a></td>
		<td style="font-size: 18pt; color: #56BA49">优秀的开源流程引擎（BPM平台）</td>
	</tr>
</table>
<div>
	<div>
		<p>
			工作流在每一个需要流程处理的系统中不可或缺，符合BPMN2.0规范且开源的流程引擎（或平台）才是每个公司需要的，结合长期以来（从jBPM4停止更新）开源流程引擎的使用上可以分为Activiti和jBPM5，前者是jBPM作者Tom的又一力作，而jBMP5则是基于Drools Flow的产物。从设计思想、源码开放、技术支持以及社区的活跃度几点对比很明显Activiti优于jBPM5，另外本书中强调过很多次的一句话：“<strong>Activiti不仅仅是一个引擎，它还是一个流程平台</strong>”；Activiti可以轻松驱动你的业务流程、搭建统一的流程平台。
		</p>
		<p>
			哦，对了，国内还有几千人技术社区作为你的技术后盾。
		</p>
		<p>
			国内Activiti领域第一人（最权威专家和布道师）撰写，Activiti项目负责人Tijs Rademakers高度认可并推荐；根据Activiti最新版本系统、深度讲解了BPM2.0规范，以及Activiti功能、用法、技巧、最佳实践和源代码分析。
		</p>
		<hr>
		<ul class="book-index" style="font-size:14pt;">
			<li><a href="#praise">赞誉</a></li>
			<li><a href="#toc">目录</a></li>
			<li><a href="#codes">源码</a></li>
			<li><a href="#errata">勘误</a></li>
			<li><a href="#comments">评论</a></li>
			<li><a href="http://book.douban.com/subject/26287219">豆瓣</a></li>
		</ul>
		<hr>
		<p style="margin-top:2em;margin-bottom:2em;">
			去 <a href="http://product.china-pub.com/3770832" style="font-size:17pt;color:red">China-Pub</a>
			| <a href="http://item.jd.com/11599588.html" style="font-size:17pt;color:red">京东</a>
			| <a href="http://product.dangdang.com/23622065.html" style="font-size:17pt;color:red">当当网</a>
			| <a href="http://www.amazon.cn/Activiti%E5%AE%9E%E6%88%98-%E9%97%AB%E6%B4%AA%E7%A3%8A/dp/B00RRCOYAQ/ref=sr_1_4?ie=UTF8&qid=1420773978&sr=8-4&keywords=activiti" style="font-size:17pt;color:red">亚马逊</a>
			购买
		</p>
	</div>
</div>

<div>
	<img src="/images/activiti-in-action.jpg" width="80%">
</div>


<h2 id="praise">赞誉</h2>
<div>
	<em style="font-size: 13pt;">Henry Yan has been a longtime valued contributor to the Activiti project, both for his commits and for promoting Activiti in China through his community and blog site (<a href="http://www.kafeitu.me/activiti.html">http://www.kafeitu.me/activiti.html</a>).
It’s great to see his Activiti book as it brings a lot of value for Activiti users and developers in China. With Henry Yan’s background in the Activiti project I highly recommend this book for new Activiti users as well as developers already using Activiti.</em>
	<p>
		<a href="http://bpmn20inaction.blogspot.com" style="font-size:15pt;">Tijs Rademakers</a><br/>
		现任Activiti项目负责人，《Activiti in Action》作者 (Manning)
	</p>
	<hr>
	<em style="font-size: 13pt;">
		咖啡兔同学的《Activiti实战》终于出炉，欣喜之情溢于言表。国内的工作流行业虽然产品繁多，但是开源一直为Activiti和jBPM垄断。相对来说Activiti延续了一贯方便灵活的特性，又不会在功能上有半分折损，在国内拥有大量的粉丝。咖啡兔同学此前一直致力于Activiti在国内的推广与传播，先后开辟了专栏博客、Activiti论坛网站、QQ群组，并积极参与Activiti的官方开发，可以说Activiti在国内能达到当前的认知程度，他是功不可没的。可惜，国内尚缺一本可以为Activiti新手答疑解惑，带初阶者更上一层楼的实体书籍。我觉得，这个任务由一直积极活跃于Activiti开源社区，既拥有实际流程项目设计研发经验，又为Activiti官方内核提交过代码的人是再合适不过了。

		全书由浅入深地引导读者进入工作流的殿堂，不仅覆盖常见的流程功能与实现方法，还专门提供了作者实践中总结的经验方法，因此本书必将成为学习流程道路上的得力助手。
	</em>
	<p>
		<a href="http://" style="font-size:15pt;">徐会生（临远）</a><br/>
		jBPM、Activiti国内推广者，《深入浅出Ext》（一、二、三版）作者
	</p>
</div>

<h2 id="codes">源码</h2>
<div>
	别问我为什么没有附带光盘，看看现在笔记本还有没有光驱？<br/>
	<ul>
		<li>Github -> <a href="https://github.com/henryyan/activiti-in-action-codes" target="_blank">https://github.com/henryyan/activiti-in-action-codes</a> </li>

		<li>开源中国 -> <a href="http://git.oschina.net/yanhonglei/activiti-in-action-codes" target="_blank">http://git.oschina.net/yanhonglei/activiti-in-action-codes</a> </li>
	</ul>


	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
	<script src="http://www.oschina.net/js/jquery/jquery.githubRepoWidget.js" type="text/javascript"></script>
	<div class="github-widget" data-repo="henryyan/activiti-in-action-codes"></div>
	<hr style="margin-top:.5em;margin-bottom:.5em;"/>
	<script src='http://git.oschina.net/yanhonglei/activiti-in-action-codes/widget_preview'></script> 
	<style> .pro_name a{color: #4183c4;} .osc_git_title{background-color: #d8e5f1;} .osc_git_box{background-color: #fafafa;} .osc_git_box{border-color: #ddd;} .osc_git_info{color: #666;} .osc_git_main a{color: #4183c4;} </style>
</div>

<h2 id="errata">勘误</h2>
<div>
	<ul>
		<li><strong>本书推荐</strong>：第二行的“前言”改为“前沿”</li>
		<li><strong>P3</strong>：BMP改为“BPM”</li>
		<li><strong>P6</strong>：表1-1的第3行『IdnetifyService』改为『IdentityService』</li>
		<li><strong>P22</strong>：代码清单2-4的#1-S处userTask的“id”属性值改为“deptLeaderAudit”</li>
		<li><strong>P67第一行</strong>：所有的开始事件均改为『结束事件』</li>
		<li><strong>P82</strong>：第4.3.12节地4行改为：添加了3个平行线（顺序执行）和3个垂直线（并行执行）</li>
		<li><strong>P122最后一行</strong>：“cadidate”改为“candidate”；感谢@south</li>
		<li><strong>P123第一行</strong>：“cadidate”改为“candidate”；感谢@south</li>
		<li><strong>P147</strong>表格中第二个readable改为“required”</li>
	</ul>
</div>

<h2 id="toc">目录</h2>
<div>
	<h3>第一部分 准备篇</h3>
	<fieldset><legend>第1章 认识Activiti</legend>
	<ul>
	<li>1.1	什么是Activiti</li>
	<li>1.2	工作流基础</li>
	<li>1.2.1	什么是BPM</li>
	<li>1.2.2	BPM生命周期</li>
	<li>1.2.3	什么是BPMN</li>
	<li>1.3	Activiti的特点</li>
	<li>1.4	Activiti的应用</li>
	<li>1.	在系统集成方面应用</li>
	2.	在其他产品中应用
	<li>1.5	Activiti架构与组件</li>
	<li>1.6	Activiti与jBPM5比较</li>
	<li>1.7	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第2章 搭建Activiti开发环境</legend>
	<ul>
	<li>2.1	下载Activiti</li>
	<li>2.1.1	目录结构</li>
	<li>2.1.2	Javadoc</li>
	<li>2.2	环境配置检查</li>
	<li>2.2.1	检查并安装JDK</li>
	<li>2.2.2	检查并安装Ant</li>
	<li>2.2.3	检查并安装Maven</li>
	<li>2.3	配置文件介绍</li>
	<li>2.3.1	Activiti配置文件</li>
	<li>2.3.2	Maven配置文件</li>
	<li>2.4	Hello World</li>
	<li>2.4.1	最简单的流程定义</li>
	<li>2.4.2	创建单元测试类</li>
	<li>2.4.3	运行Hello World</li>
	<li>2.4.4	添加业务节点</li>
	<li>2.5	Activiti Explorer</li>
	<li>2.5.1	配置并运行Activiti Explorer</li>
	<li>2.5.2	使用Activiti Explorer</li>
	<li>2.6	本章小结</li>
	</ul>
	</fieldset>
	<h3>第二部分 基础篇</h3>
	<fieldset><legend>第3章 流程设计工具</legend>
	<ul>
	<li>3.1	基于B/S架构的流程设计器Activiti Modeler</li>
	<li>3.1.1	Activiti Modeler特点</li>
	<li>3.1.2	下载Signavio-core-components</li>
	<li>3.1.3	配置打包与运行</li>
	<li>3.1.4	打包Windows用户</li>
	<li>3.1.5	设计请假流程</li>
	<li>3.1.6	导出bpmn2.0.xml</li>
	<li>3.2	在Activiti Explorer中使用Activiti Modeler</li>
	<li>3.3	基于Eclipse插件的流程设计器Activiti Designer</li>
	<li>3.3.1	Acvititi Designer特点</li>
	<li>3.3.2	安装Activiti Designer</li>
	<li>3.3.3	设计流程</li>
	<li>3.3.4	自动化</li>
	<li>3.3.5	升级历史遗留的流程设计</li>
	<li>3.3.6	导入Activiti Modeler设计</li>
	<li>3.3.7	泳池与泳道</li>
	<li>3.3.8	在Activiti Designer中使用泳道与泳池</li>
	<li>3.4	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第4章 Activiti与BPMN2.0规范</legend>
	<ul>
	<li>4.1.	启动事件与结束事件</li>
	<li>4.1.1.	启动事件</li>
	<li>4.1.2.	结束事件</li>
	<li>4.2.	顺序流</li>
	<li>4.2.1.	标准顺序流</li>
	<li>4.2.2.	条件顺序流</li>
	<li>4.3.	任务</li>
	<li>4.3.1.	用户任务</li>
	<li>4.3.2.	脚本任务</li>
	<li>4.3.3.	Java Service任务</li>
	<li>4.3.4.	Web Service任务</li>
	<li>4.3.5.	业务规则任务</li>
	<li>4.3.6.	邮件任务</li>
	<li>4.3.7.	Camel任务</li>
	<li>4.3.8.	Mule任务</li>
	<li>4.3.9.	手动任务</li>
	<li>4.3.10.	接收任务</li>
	<li>4.3.11.	Shell任务</li>
	<li>4.3.12.	多实例</li>
	<li>4.4.	网关</li>
	<li>4.4.1.	排他网关</li>
	<li>4.4.2.	并行网关</li>
	<li>4.4.3.	包容网关</li>
	<li>4.4.4.	事件网关</li>
	<li>4.5.	子流程与调用活动</li>
	<li>4.5.1.	子流程</li>
	<li>4.5.2.	调用活动</li>
	<li>4.5.3.	事件子流程</li>
	<li>4.5.4.	事务子流程</li>
	<li>4.6.	边界与中间事件</li>
	<li>4.6.1.	边界事件</li>
	<li>4.6.2.	中间捕获事件</li>
	<li>4.6.3.	中间抛出事件</li>
	<li>4.7.	监听器</li>
	<li>4.7.1.	执行监听器</li>
	<li>4.7.2.	任务监听器</li>
	<li>4.8.	本章小结</li>
	</ul>
	</fieldset>
	###	第三部分 实战篇
	<fieldset><legend>第5章 用户与组及部署管理</legend>
	<ul>
	<li>5.1.	用户与组</li>
	<li>5.1.1.	用户</li>
	<li>5.1.2.	组</li>
	<li>5.1.3.	用户与组的关系</li>
	<li>5.1.4.	用户任务中的用户与组</li>
	<li>5.2.	部署流程资源</li>
	<li>5.2.1.	classpath方式</li>
	<li>5.2.2.	InputStream方式</li>
	<li>5.2.3.	字符串方式</li>
	<li>5.2.4.	Zip/Bar格式压缩包方式</li>
	<li>5.3.	流程部署及资源读取</li>
	<li>5.3.1.	读取已部署流程定义</li>
	<li>5.3.2.	从客户端部署流程</li>
	<li>5.3.3.	读取流程定义的XML</li>
	<li>5.3.4.	读取流程定义的图片及图片中的中文乱码</li>
	<li>5.3.5.	删除部署</li>
	<li>5.4.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第6章 任务表单</legend>
	<ul>
	<li>6.1.	动态表单</li>
	<li>6.1.1.	流程定义</li>
	<li>6.1.2.	单元测试</li>
	<li>6.1.3.	在Activiti Explorer中运行流程</li>
	<li>6.2.	实现自己的Activiti Explorer</li>
	<li>6.2.1.	完善身份验证功能</li>
	<li>6.2.2.	流程启动表单</li>
	<li>6.2.3.	任务签收与办理</li>
	<li>6.2.4.	自定义表单的字段类型</li>
	<li>6.3.	外置表单</li>
	<li>6.3.1.	流程定义</li>
	<li>6.3.2.	单元测试</li>
	<li>6.3.3.	自定义表单引擎</li>
	<li>6.3.4.	读取流程启动表单</li>
	<li>6.3.5.	任务签收与办理</li>
	<li>6.4.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第7章 Activiti与容器集成</legend>
	<ul>
	<li>7.1.	流程引擎工厂</li>
	<li>7.1.1.	创建引擎的方式</li>
	<li>7.1.2.	配置 ProcessEngineFactoryBean</li>
	<li>7.2.	自动部署流程定义</li>
	<li>7.3.	表达式</li>
	<li>7.3.1.	表达式基础</li>
	<li>7.3.2.	表达式示例</li>
	<li>7.3.3.	使用Spring管理变量</li>
	<li>7.4.	监听器</li>
	<li>7.5.	Spring容器集成应用实例</li>
	<li>7.5.1.	业务建模</li>
	<li>7.5.2.	启动流程</li>
	<li>7.5.3.	任务读取</li>
	<li>7.5.4.	任务办理</li>
	<li>7.6.	使用Spring注解初始化引擎</li>
	<li>7.6.1.	使用@EnableActiviti注解</li>
	<li>7.6.2.	使用Spring Boot初始化引擎</li>
	<li>7.7.	CDI模块</li>
	<li>7.7.1.	启动示例</li>
	<li>7.7.2.	引擎配置与流程定义</li>
	<li>7.7.3.	流程定义与启动</li>
	<li>7.7.4.	任务办理与完成</li>
	<li>7.7.5.	事件监听</li>
	<li>7.8.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第8章 邮件服务</legend>
	<ul>
	<li>8.1.	配置与测试</li>
	<li>8.1.1.	搭建邮件系统</li>
	<li>8.1.2.	通过Activiti的邮件任务发送邮件</li>
	<li>8.1.3.	使用Gmail发送邮件</li>
	<li>8.2.	与业务集成</li>
	<li>8.2.1.	即时发送邮件</li>
	<li>8.2.2.	定时发送邮件</li>
	<li>8.3.	本章小节</li>
	</ul>
	</fieldset>

	<fieldset><legend>第9章 多实例</legend>
	<ul>
	<li>9.1.	非用户任务</li>
	<li>9.2.	用户任务多实例</li>
	<li>9.2.1.	顺序方式办理</li>
	<li>9.2.2.	并行方式办理</li>
	<li>9.2.3.	设置结束条件</li>
	<li>9.3.	应用实例—请假会签</li>
	<li>9.3.1.	流程定义</li>
	<li>9.3.2.	任务办理</li>
	<li>9.4.	审批意见</li>
	<li>9.5.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第10章 子流程与调用活动</legend>
	<ul>
	<li>10.1.	子流程</li>
	<li>10.1.1.	流程定义</li>
	<li>10.1.2.	流程办理</li>
	<li>10.1.3.	分析流程数据</li>
	<li>10.2.	调用活动</li>
	<li>10.2.1.	流程定义</li>
	<li>10.2.2.	单元测试</li>
	<li>10.2.3.	流程办理</li>
	<li>10.2.4.	分析流程数据</li>
	<li>10.3.	事件子流程</li>
	<li>10.3.1.	流程定义</li>
	<li>10.3.2.	单元测试</li>
	<li>10.4.	多实例支持</li>
	<li>10.5.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第11章 事件</legend>
	<ul>
	<li>11.1	启动事件</li>
	<li>11.1.1	定时启动事件</li>
	<li>11.1.2	消息启动事件</li>
	<li>11.2	结束事件</li>
	<li>11.2.1	终止结束事件</li>
	<li>11.2.2	消息结束事件</li>
	<li>11.3	边界事件</li>
	<li>11.3.1	异常边界事件</li>
	<li>11.3.2	消息边界事件</li>
	<li>11.3.3	信号边界事件</li>
	<li>11.4	中间事件</li>
	<li>11.5	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第12章 用户任务与附件</legend>
	<ul>
	<li>12.1.	用户任务</li>
	<li>12.1.1	改进任务列表</li>
	<li>12.1.2	改进任务表单</li>
	<li>12.1.3	任务相关人员</li>
	<li>12.1.4	反签收任务</li>
	<li>12.1.5	候选人与候选组</li>
	<li>12.1.6	改进任务查询</li>
	<li>12.2.	子任务</li>
	<li>12.3.	手动任务</li>
	<li>12.4.	附件</li>
	<li>12.5.	改进意见列表</li>
	<li>12.6.	任务委派</li>
	<li>12.6.1	单元测试</li>
	<li>12.6.2	任务表单中的委派</li>
	<li>12.7.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第13章 流程数据查询与跟踪</legend>
	<ul>
	<li>13.1.	Query API简介</li>
	<li>13.2.	运行时数据查询</li>
	<li>13.2.1.	任务查询</li>
	<li>13.2.2.	查询参与的流程</li>
	<li>13.3.	流程跟踪</li>
	<li>13.4.	历史数据查询</li>
	<li>13.4.1.	历史活动及表单查询</li>
	<li>13.4.2.	已结束流程</li>
	<li>13.5.   使用MyBatis查询Map集合</li>
	<li>13.6.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第14章 管理员特性</legend>
	<ul>
	<li>14.1.	流程状态</li>
	<li>14.1.1	流程定义状态</li>
	<li>14.1.2	作业查询</li>
	<li>14.1.3	流程实例状态</li>
	<li>14.2.	作业管理</li>
	<li>14.2.1	作业执行原理</li>
	<li>14.2.2	作业执行异常</li>
	<li>14.2.3	独占与异步</li>
	<li>14.3.	删除流程实例</li>
	<li>14.4.	流程定义权限控制</li>
	<li>14.4.1	权限拦截</li>
	<li>14.4.2	设置候选启动人和候选启动组</li>
	<li>14.4.3	读取候选启动数据</li>
	<li>14.5.	读取引擎属性</li>
	<li>14.6.	数据库查询</li>
	<li>14.7.	用户与组</li>
	<li>14.8.	本章小结</li>
	</ul>
	</fieldset>
	<h3>第四部分 高级篇</h3>
	<fieldset><legend>第15章 集成WebService</legend>
	<ul>
	<li>15.1.	发布WebService服务</li>
	<li>15.2.	在流程中定义WebService任务</li>
	<li>15.3.	在流程中调用WebService</li>
	<li>15.4.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第16章 集成规则引擎</legend>
	<ul>
	<li>16.1.	定义流程与规则</li>
	<li>16.1.1.	部署规则文件</li>
	<li>16.1.2.	单元测试</li>
	<li>16.2.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第17章 集成JPA</legend>
	<ul>
	<li>17.1.	配置JPA</li>
	<li>17.1.1	Standalone模式</li>
	<li>17.1.2	Spring模式</li>
	<li>17.2.	JPA版本的请假流程</li>
	<li>17.2.1	启动流程时持久化JPA实体</li>
	<li>17.2.2	更改JPA实体属性</li>
	<li>17.2.3	清理历史表单数据</li>
	<li>17.3.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第18章 整合ESB</legend>
	<ul>
	<li>18.1	Camel简介</li>
	<li>18.2	Camel快速进阶</li>
	<li>18.3	Hello World</li>
	<li>18.4	添加Camel依赖</li>
	<li>18.5	与业务的结合</li>
	<li>18.5.1	设计流程定义</li>
	<li>18.5.2	定义Camel Flow</li>
	<li>18.5.3	启动Camel Flow</li>
	<li>18.5.4	单元测试</li>
	<li>18.6	ESB简介</li>
	<li>18.7	Mule快速进阶</li>
	<li>18.8	Hello World</li>
	<li>18.9	添加Mule依赖</li>
	<li>18.10	与业务的结合</li>
	<li>18.10.1	设计流程定义</li>
	<li>18.10.2	定义Mule Flow</li>
	<li>18.10.3	启动Mule Flow</li>
	<li>18.10.4	单元测试</li>
	<li>18.11	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第19章 统一身份管理</legend>
	<ul>
	<li>19.1.	一套典型的身份系统</li>
	<li>19.2.	通过引擎接口同步数据</li>
	<li>19.2.1	通过引擎接口同步数据</li>
	<li>19.2.2	自定义Session工厂方式</li>
	<li>19.3.	用视图代替物理表</li>
	<li>19.4.	集成LDAP</li>
	<li>19.5.	本章小节</li>
	</ul>
	</fieldset>

	<fieldset><legend>第20章 REST API</legend>
	<ul>
	<li>20.1.	通信协议简介</li>
	<li>20.2.	REST API概述</li>
	<li>20.2.1.	REST API认证机制</li>
	<li>20.3.	发布REST API</li>
	<li>20.3.1.	通过浏览器访问</li>
	<li>20.3.2.	通过Http Client访问</li>
	<li>20.3.3.	通过Restlet访问</li>
	<li>20.3.4.	通过Apache CXF访问</li>
	<li>20.4.	集成REST API</li>
	<li>20.4.1.	依赖及配置文件</li>
	<li>20.4.2.	通过Ajax访问</li>
	<li>20.5.	完整示例</li>
	<li>20.5.1.	部署流程</li>
	<li>20.5.2.	查询Deployment</li>
	<li>20.5.3.	查询流程定义</li>
	<li>20.5.4.	启动流程</li>
	<li>20.5.5.	读取流程变量</li>
	<li>20.5.6.	查询任务</li>
	<li>20.5.7.	签收任务</li>
	<li>20.5.8.	完成任务</li>
	<li>20.5.9.	查询历史数据</li>
	<li>20.6.	本章小结</li>
	</ul>
	</fieldset>

	<fieldset><legend>第21章 入侵Activiti</legend>
	<ul>
	<li>21.1	解析BPMN文件</li>
	<li>21.1.1.	BpmnModel对象与XML之间的转换</li>
	<li>21.1.2.	动态创建流程</li>
	<li>21.1.3.	BPMN解析处理器</li>
	<li>21.2	全局事件处理器</li>
	<li>21.2.1.	定义事件处理器</li>
	<li>21.2.2.	处理捕获的事件</li>
	<li>21.2.3.	事件处理器的异常处理</li>
	<li>21.2.4.	动态注册事件处理器</li>
	<li>21.2.5.	任务自动转办</li>
	<li>21.3	命令与拦截器</li>
	<li>21.3.1.	命令与拦截器运行机制</li>
	<li>21.3.2.	自定义命令</li>
	<li>21.3.3.	命令拦截器</li>
	<li>21.4	流程虚拟机—PVM</li>
	<li>21.4.1.	简述PVM</li>
	<li>21.4.2.	Hello PVM</li>
	<li>21.4.3.	PVM进阶</li>
	<li>21.5	本章小结</li>
	</ul>
	</fieldset>
</div>
<div id="comments"></div>